'''
1.导入socket模块
2.bind绑定iphe port
3.listen使套接字设置为被动模式
4.accept等待客服端连接
5.recv/send接收发送数据
'''

# 1.导入socket模块
import socket
TCP_server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 2.bind绑定iphe port     
TCP_server_socket.bind(("192.168.124.4", 8080))
# 3.listen使套接字设置为被动模式
# 参数：等待客服端链接的数量
# 此时，socket套接字对象由主动连接模式转变为被动连接模式，接收客户端连接
TCP_server_socket.listen(128)
print("-------------------------服务器已开启，等待客户端接入")

# 4.accept等待客服端连接（阻塞当前线程，直到有客户端接入）
# 服务器会为接进来的客户端创建socket对象，用于与其收发数据
tcp_client, client_addr = TCP_server_socket.accept()
print("有新的客户端接入", client_addr)

while True: 
    # 5.recv/send接收发送数据（阻塞）
    client_data = tcp_client.recv(2048)
    if client_data:
        print("client_data:", client_data.decode())
        # 服务器回复数据
        tcp_client.send("已消息已收到".encode())
    else:
        # 接收到空字符串，客户端已断开
        print(f"客户端：{client_addr} 已断开连接")
        tcp_client.close()
        break

TCP_server_socket.close()